package main

import (
	"fmt"
	"reflect"
)

type Student struct{
	Name string
	Age int
	Score float32
}

func TestStruct(x interface{}){
	v := reflect.ValueOf(x)
	if k := v.Kind(); k != reflect.Struct {
		fmt.Println(v, "不是结构体")
		return
	}
	fmt.Println(v, "是结构体")

	numOfField := v.NumField()
	fmt.Println("结构体里的字段数量:",numOfField)
	numOfMethod := v.NumMethod()
	fmt.Println("结构体里的方法数量:",numOfMethod)
}

func main() {
	TestStruct(1)  // 传个非结构体测试一下效果
	var a Student = Student{"Adam", 17, 92.5}
	TestStruct(a)
}